// src/utils/request.js

import { BASE_URL } from './config.js';

export const request = (options) => {
	return new Promise((resolve, reject) => {
		// 从本地存储中获取用户ID
		const userId = uni.getStorageSync('userId');
		const header = {
			...options.header,
		};
		if (userId) {
			// 如果存在用户ID，则添加到请求头中
			header['X-User-ID'] = userId;
		}

		uni.showLoading({
			title: '加载中...'
		});
		const finalUrl = BASE_URL + options.url;
		
		// [核心诊断] 打印最终的请求URL
		console.log('发起请求 ->', options.method || 'GET', finalUrl);
		console.log('请求参数 ->', options.data);
		uni.request({
			url: BASE_URL + options.url,
			method: options.method || 'GET',
			data: options.data || {},
			header: header,
			success: (res) => {
				if (res.statusCode === 200) {
					// 统一处理后端返回的 code
					if (res.data.code === 200) {
						// 只返回有用的 data 部分
						resolve(res.data.data);
					} else {
						// 后端返回操作失败
						uni.showToast({
							title: res.data.msg || '操作失败',
							icon: 'none'
						});
						reject(res.data);
					}
				} else {
					// HTTP状态码非200
					uni.showToast({
						title: `请求失败: ${res.statusCode}`,
						icon: 'none'
					});
					reject(res);
				}
			},
			fail: (err) => {
				uni.showToast({
					title: '网络请求异常',
					icon: 'none'
				});
				reject(err);
			},
			complete: () => {
				uni.hideLoading();
			}
		});
	});
};